#!/usr/bin/env python
################################################################################
#                                                                              #
#                                                                              #
#                                                                              #
#                                                                              #
#                                                                              #
#                                                                              #
#                                                                              #
#                                                                              #
#                                                                              #
################################################################################

import sys
import getopt
from Preferences import Preferences
from BuildWizard import BuildWizard
from MainWindow import MainWindow
from BuildWizException import BuildWizException

################################################################################
#
################################################################################
hasGTK = True
try:
    import pygtk
    pygtk.require( "2.0")
except:
    pass
try:
    import gtk, gobject
    import gtk.glade
except:
    #sys.exit( 1)
    hasGTK = False


################################################################################
#
################################################################################
def printHelp():
    print "This program helps to build and deploy projects based on CMake build system."
    print "Usage:\n\n"
    print "       buildwiz.py [options]\n\n"
    print "Command line options:"
    print "  -h, --help              = this help"
    print "  -b, --build=file.cfg    = execute in shell mode and specify config file \'file.cfg\'"
    print "  -g, --gui               = execute in GUI mode\n\n"

################################################################################
#
################################################################################
def runGUIMode():
    try:
        preferences = Preferences()
        bw = BuildWizard( preferences)
        mainWin = MainWindow( bw)
        mainWin.start()
    except BuildWizException, e:
        print "ERROR: ", e
        exit( 1)

################################################################################
#
################################################################################
def runShellMode( buildFile):
    """Process a specific build"""
    print 'runShellMode() - %s' % buildFile

################################################################################
#
#                               MAIN
#
################################################################################
if __name__ == "__main__":
    cmdlineParams = sys.argv[ 1:]
    enableGUI = False
    buildFile = ""
    # Using gnu_getopt we can sort params in any order
    try:
        opts, args = getopt.gnu_getopt( cmdlineParams, 'hgb:', ['help', 'gui', 'build='])
    except getopt.GetoptError, error:
        print ">>> OOPS, unknown %s\n\n" % error
        printHelp()
        sys.exit( 1)

    for option, parameter in opts:
        if option in ('-h', '--help'):
            printHelp()
            sys.exit( 1)
        if option in ('-g', '--gui'):
            enableGUI = True
        if option in ('-b', '--build'):
            buildFile = parameter

    if enableGUI and hasGTK:
        runGUIMode()
    else:
        runShellMode( buildFile)


